# notes to start:

    - run xrdb .Xresources and sh swap_caps
# Walkthrough

## 0. Intro
    - About me:
        - Korey MacDougall
        - Researcher and Developer
        - New to Sudbury
        - Founder of Nickel City Software Inc.
        - Lover of GNU/Linux, FLOSS, and vim

    - Goals for talk
        - Give you concepts and tools to start customizing linux

## 1. Preliminary questions
    - who has used Linux before?
    - who has done some customization on Linux before?

## 2. Preliminary notes

### 2a. Notes on distributions, packages, terminology
        - a distro is a collection of packages
            - universal vs. distro-specific
            - display manager vs. package manager
### 2b. Notes on customization
    - two types of customization
        - aesthetic: desktop environments, themes, shell prompts
        - functional: keyboard remappings, shell aliases, startup scripts

## 3. Customizing

### 3b. Desktop environments
        - a desktop environment is made of a up several pieces:
            - Display server (Xorg, Wayland, Mir)
            - Window Manager
            - Display Manager
            - Themes, icon packages, fonts
        - gnome, kde, xfce4, cinnamon, unity, enlightenment, etc

### 3c. Display Managers
        - gdm3, sddm, lightdm
        - to change: dpkg-reconfigure gdm3

### 3d. window managers
        - types: stacking, tiling, dynamic
            - stacking - kwin, xfwm4, metacity 
            - tiling - ratpoison, xmonad, spectrwm
            - dynamic - i3, awesome-wm, dwm
        - can replace default wm with --replace
            - e.g., "kwin --replace" or "xfwm4 --replace"


#### 3d.1 in-depth w/ i3-wm && i3-gaps
        - https://github.com/Airblader/i3/wiki/Compiling-&-Installing
        - tweaks:
            - status bar on top
            - edit status bar
            - i3 gaps / window titles
            - background
            - compton for transparency
            - scratchpad
            - workspaces - tab to cycle
            - polybar


### 3e. shells
        - aliases
            - hg & pg
        - bash, zsh, dash, ksh, csh, ...
            - zsh
            - oh-my-zsh: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
            - tab-completion (switches, kill)
        - chsh && cat /etc/shells
        - keybindings (vi / emacs mode)


## 4. Portability and storage

### 4a. Git for version control
    - git init
    - create bashrc and vimrc, move to config dir
        - bashrc - "set -o vi"
        - vimrc / vim folder
    - git add -A
    - git commit -m "Initial commit"

### 4b. notabug.org for remote repo
    - git add remote origin https://notabug.org/kmac/devfest-linux/
    - git push origin master

### 4c. symlinks for file organization
    - ln -s {source} {target}
    - ./mk_sym_links.sh

